【转载】EXCEL VBA 通过VBA中的Union合并多个Range选择区域 您所在的位置:网站首页 vba range 不连续区域 【转载】EXCEL VBA 通过VBA中的Union合并多个Range选择区域

【转载】EXCEL VBA 通过VBA中的Union合并多个Range选择区域

2023-08-18 21:21| 来源: 网络整理| 查看: 265

在Excel中,Union的功能是合并两个或两个以上的选择区域,合并成为一个更大的区域。 所合并的多个选择区域,这些选择区域,可以是不连续的,也可以是连续的。一般情况下,要使用Union,可通过如下来使用。expression.Union(Arg1, Arg2, ...)expression参数为可选。该表达式返回一个Application对象;Arg1, Arg2, ... Range 类型,必需。必须至少指定两个Range对象。在使用Union的时候,我们也没有必要使用expression.Union,直接调用Application.Union方法即可。一、最不灵活的实例 Dim MyArea1, MyArea2 As RangeSet MyArea1 = Range("A1:B3")Set MyArea2 = Range("A7:B10")Application.Union(MyArea1, MyArea2).Select如上代码,功能是,首先定义两个选择区域,然后,分别设置选择区域为:A1:B3和A7:B10;最后,通过Application.Union把两个选择区域进行合并,并将合并后的区域选中。当然,Application.Union合并区域,功能是强大的,但是,至少要有两个选择区域;如果有多个,也是可行的,如下代码,通过Application.Union合并三个选择区域,并将其选中。Dim MyArea1, MyArea2, MyArea3 As RangeSet MyArea1 = Range("A1:B3")Set MyArea2 = Range("A7:B10")Set MyArea3 = Range("A12:B14")Application.Union(MyArea1, MyArea2, MyArea3).Select以上代码大家都看了,有没有发现问题呢?当我们在设定选择区域的时候,必须在Range("")指明从哪个单元格到哪个单元格,比如Range("A12:B14"),那是多么的麻烦。下面,给大家介绍一下更为灵活方便的方法。二、较为灵活方便的方法要选择多个区域并合并,使用单元格名称来确定区域,是多么的不方便。我们完全可以使用行列的序号来代替单元格名称。如下代码:Dim MyArea1, MyArea2, MyArea3 As RangeSet MyArea1 = Range(Cells(1, 1), Cells(3, 3))Set MyArea2 = Range(Cells(6, 1), Cells(9, 3))Set MyArea3 = Range(Cells(12, 1), Cells(13, 3))Application.Union(MyArea1, MyArea2, MyArea3).Select就是这样,通过Range(Cells(1, 1), Cells(3, 3))来代替Range(“A1:C3”)。知道为什么要这么使用吗,愿意就是,当您试图通过VBA来确定单元格名称,如A1:C3时,难以构造这样的字符连接。倒不如直接使用行列所在的序号进行替代,因为Cells(行号、列号),里面的行列号,我们可以通过直接指定或者通过循环赋予一个值。三、更灵活的实例基于以上两个实例,下面,我们可以构造一个更为灵活的实例。先看如下代码吧:Application.Union(Range(Cells(1, 1), Cells(11, 3)), Range(Cells(16, 1), Cells(16, 3)), Range(Cells(21, 1), Cells(32, 3))).Select上述代码中,已经不再单独定义Range对象了,而是在Union方法中,直接调用Range(Cells(1, 1), Cells(11, 3))来合并被选择的单元格区域



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有